package br.com.virtual.recomendar.controller;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.virtual.base.controller.util.VirtualMB;
import br.com.virtual.cadastrar.model.Pessoa;
import br.com.virtual.cadastrar.model.Produto;
import br.com.virtual.cadastrar.service.UsuarioService;
import br.com.virtual.recomendar.model.Avaliacao;
import br.com.virtual.recomendar.service.AvaliacaoService;

@ManagedBean @ViewScoped
public class AvaliacaoMB extends VirtualMB {

	private static final long serialVersionUID = 1L;

	private Integer nota;
	private String comentario;
	private Avaliacao avaliacao;
	private Produto produto;
	private Pessoa pessoa;
	
	@EJB private AvaliacaoService avaliacaoService;
	@EJB private UsuarioService usuarioService;
	
	@PostConstruct
	private void init(){
	
		produto = (Produto) this.getSession("produtoAvaliacao");
		this.setSession("produtoAvaliacao", null);
		
		pessoa = this.getUsuarioLogado().getPessoa();
		
		if(!isNull(produto) && !isNull(pessoa))	
			avaliacao = avaliacaoService.getAvaliacao(produto, pessoa);
		
	}
	
	public void avaliar(Produto produtoAvaliado, Pessoa avaliador){
		
		avaliacao.setPessoa(avaliador);
		avaliacao.setProduto(produtoAvaliado);
		avaliacao = avaliacaoService.avaliar(avaliacao);
	}

	
	
	/*
	 * g & s
	 * */
	
	public Integer getNota() {
		return nota;
	}

	public void setNota(Integer nota) {
		this.nota = nota;
	}

	public String getComentario() {
		return comentario;
	}

	public void setComentario(String comentario) {
		this.comentario = comentario;
	}

	public Avaliacao getAvaliacao() {
		return avaliacao;
	}

	public void setAvaliacao(Avaliacao avaliacao) {
		this.avaliacao = avaliacao;
	}

	public AvaliacaoService getAvaliacaoService() {
		return avaliacaoService;
	}

	public void setAvaliacaoService(AvaliacaoService avaliacaoService) {
		this.avaliacaoService = avaliacaoService;
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
}
